package com.syyc.utils;

import com.syyc.pojo.Content;
import org.apache.poi.hssf.usermodel.*;

import java.util.Iterator;
import java.util.List;

@SuppressWarnings("all")
public class ExcelUtil2 {

    /**
     * 导出Excel
     * @param sheetName sheet名称
     * @param title 标题
     * @param values 内容
     * @param wb HSSFWorkbook对象
     * @return
     */
    public static HSSFWorkbook getHSSFWorkbook(String sheetName, String[] title, List<Content> contentList, HSSFWorkbook wb){

        // 第一步，创建一个HSSFWorkbook，对应一个Excel文件
        if(wb == null){
            wb = new HSSFWorkbook();
        }


        // 第二步，在workbook中添加一个sheet,对应Excel文件中的sheet
        HSSFSheet sheet = wb.createSheet(sheetName);

        // 第三步，在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制
        HSSFRow row = sheet.createRow(0);

        // 第四步，创建单元格，并设置值表头 设置表头居中
        HSSFCellStyle style = wb.createCellStyle();        // 创建一个居中格式
        style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        style.setBorderBottom(HSSFCellStyle.BORDER_DOTTED);//下边框
        style.setBorderLeft(HSSFCellStyle.BORDER_DOTTED);//左边框
        style.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
        style.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框‘

        HSSFFont f  = wb.createFont();
        f.setFontHeightInPoints((short) 16);//字号
        f.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);//加粗
        style.setFont(f);

        //9.调整单元格宽度
        sheet.setColumnWidth(0,252*80+323);
        sheet.setColumnWidth(1,252*80+323);
        sheet.setColumnWidth(2,252*80+323);
        sheet.setColumnWidth(3,252*15+323);
        sheet.setColumnWidth(4,252*15+323);

        if (null == contentList && null == title) {
            return wb;
        }

        //声明列对象
        HSSFCell cell = null;

        //创建标题
        for(int i=0;i<title.length;i++){
            cell = row.createCell(i);
            cell.setCellValue(title[i]);
            cell.setCellStyle(style);
        }

        if (null == contentList) {
            return wb;
        }

        //创建内容
        Iterator<Content> iterator = contentList.iterator();

        int i = 1;
        while (iterator.hasNext()) {
            Content content = iterator.next();
            row = sheet.createRow(i++);
            for (int j = 0; j < 5; j++) {
                HSSFCell rowCell = row.createCell(j);
                rowCell.setCellStyle(style);
                switch (j) {
                    case 0:
                        rowCell.setCellValue(content.getTitle());
                        break;
                    case 1:
                        rowCell.setCellValue(content.getCover());
                        break;
                    case 2:
                        rowCell.setCellValue(content.getLink());
                        break;
                    case 3:
                        rowCell.setCellValue(content.getBadge());
                        break;
                    case 4:
                        rowCell.setCellValue(content.getIndexShow());
                        break;
                    default:
                        System.out.println("插入单元格时出错~");
                        break;
                }
            }

        }

        return wb;
    }


    /**
     * 向工作表中添加行和列
     * @param sheet 工作表
     * @param content 单元格的内容
     * @param cellStyle 单元格样式
     * @param num 行号
     * @return 添加成功 true 否则 false
     */
    public static boolean setCellValue(HSSFSheet sheet, Content content,HSSFCellStyle cellStyle, int num) {
        // 创建行
        HSSFRow row = sheet.createRow(num);

        for (int i = 0; i < 3; i++) {
            HSSFCell cell = row.createCell(i);

            switch (i) {
                case 0:
                    cell.setCellValue(content.getTitle());
                    break;
                case 1:
                    cell.setCellValue(content.getBadge());
                    break;
                case 2:
                    cell.setCellValue(content.getIndexShow());
                    break;
                default:
                    System.out.println("插入单元格时出错~");
                    break;
            }

            cell.setCellStyle(cellStyle);
        }

        return row != null;
    }
}